module.exports = (app, router, assert, utils) => {
    const TestImg = require('../../../model/TestImg');
    const TestXlsx = require('../../../model/TestXlsx');
    const multer = require('multer');
    const fs = require('fs');//文件目录读写操作
    const xlsx = require('node-xlsx');//EXCEL 文件操作

    /**缓存二进制文件夹 */
    const uploadRedis = multer({ dest: __dirname + '/../../../upload/redis' });
    /**存放图片.jpg等文件夹 */
    const uploadImages = multer({ dest: __dirname + '/../../../upload/images' });
    /**存放xlsx文件夹 */

    /**单张图片上传 多张图片上传也能用*/
    router.post('/upload', uploadRedis.single('file'), async (req, res) => {
        const file = req.file;
        /**读取文件 */
        await fs.readFile(file.path, async (err, data) => {
            //读取失败，说明没有上传成功
            utils.error(err, res, "上传失败");
            // 声明图片名字为时间戳和随机数拼接成的，尽量确保唯一性
            let time = Date.now() + parseInt(Math.random() * 999) + parseInt(Math.random() * 2222);
            let extname = file.mimetype.split('/')[1];
            let keepname = time + '.' + extname;
            //创建写入文件 1.图片的绝对路径   2.写入的内容  3.回调函数  
            await fs.writeFile(__dirname + '/../../../upload/images/' + keepname, data, (err) => {
                utils.error(err, res, "上传失败1");
                /**写入数据库 */
                TestImg.create({ src: keepname }, (err) => {
                    utils.result(err, res, '上传失败2', '上传成功2', keepname);
                })
            })
            /**删除缓存的二进制文件 */
            fs.unlink(__dirname + '/../../../upload/redis/' + file.filename, (err) => {
                utils.error(err, res, "上传缓存二进制文件失败");
            })
        })
    })

    /**删除图片 */
    router.get('/upload/del', async (req, res) => {
        const src = req.query.src;
        console.log(req.query);
        /**删除images里的图骗 */
        await fs.unlink(__dirname + '/../../../upload/images/' + src, async (err) => {
            utils.error(err, res, "删除图片成功");
            await TestImg.deleteOne({ src: src }, (err) => {
                utils.result(err, res, '删除图片失败1', '删除图片成功2');
            });
        })
    })

    /**上传xlsx表格读取数据  如果要保存的话和上传图片的方法一样 */
    router.post('/xlsx/upload', uploadRedis.single('file'), async (req, res) => {
        // const file = req.file;
        let file = req.file
        await fs.readFile(file.path, async (err, data) => {
            let aa = xlsx.parse(data)
            console.log(aa[0].data);
            //读取失败，说明没有上传成功
            // utils.error(err, res, "上传失败");
            // 声明图片名字为时间戳和随机数拼接成的，尽量确保唯一性
            // let time = Date.now() + parseInt(Math.random() * 999) + parseInt(Math.random() * 2222);
            // let extname = file.originalname.split('.')[1];
            // let keepname = time + '.' + extname;
            //创建写入文件 1.图片的绝对路径   2.写入的内容  3.回调函数  
            // await fs.writeFile(__dirname + '/../../../upload/images/' + keepname, data, (err) => {
            //     utils.error(err, res, "上传失败1");
            //     /**写入数据库 */
            //     TestImg.create({ src: keepname }, (err) => {
            //         utils.result(err, res, '上传失败2', '上传成功2', keepname);
            //     })
            // })
            /**删除缓存的二进制文件 */
            // fs.unlink(__dirname + '/../../../upload/redis/' + file.filename, (err) => {
            //     utils.error(err, res, "上传缓存二进制文件失败");
            // })
        })
        // let data = [
        //     {
        //         name: '第一个sheet',
        //         data: [['字段1', '字段2', '字段3'], ['1', 'Michael', '99'], ['2', 'Tom', '98']]
        //     },
        //     {
        //         name: '第二个sheet',
        //         data: [['A1', 'B1'], ['A2', 'B2']]
        //     }]

        // let buffer = xlsx.build(req.file)
        // await fs.writeFile(__dirname + '/../../../upload/xlsx/resut.xls', buffer, (err) => {
        //     if (err) {
        //         console.log(1);
        //     }
        //     else {
        //         console.log(2);
        //     }
        // })
    })
}